Aperçu
Jardins
Les Jardins sont des portefeuilles crypto programmables implémentés comme des contrats Diamond ERC-2535. Chaque Jardin agit comme un « hub » intelligent pour les investissements d’un utilisateur, permettant des stratégies DeFi évolutives tout en masquant la complexité du gaz et des transactions. Les investisseurs contrôlent les Jardins via un NFT ERC-721 (jeton unique), qui représente la propriété du portefeuille. Le système s’appuie sur les concepts d’Account Abstraction (ERC-4337) (bundlers et paymasters) pour rendre l’investissement fluide et économe en gaz. Un registre de facettes géré par la DAO garantit que seuls les modules (facettes) approuvés peuvent être ajoutés, assurant ainsi une voie de mise à jour sécurisée et gouvernée.
Jardins comme portefeuilles Diamond
Chaque Jardin est une instance d’un proxy Diamond ERC-2535. Le Diamond Standard définit un proxy qui délègue les appels à plusieurs contrats facettes. En essence, « un diamond est un contrat avec des fonctions externes fournies par des contrats appelés facettes ». Ce modèle modulaire signifie que les Jardins ont une taille pratiquement illimitée et peuvent être étendus avec de nouvelles logiques après le déploiement. Par défaut, chaque Jardin inclut les facettes de référence pour les mises à jour, l’introspection et le contrôle de propriété. Les facettes DiamondCut et DiamondLoupe permettent d’ajouter/remplacer/retirer des fonctionnalités à la volée, et la facette Ownership gère les droits d’administration. Dans l’implémentation standard, DiamondCutFacet, DiamondLoupeFacet et OwnershipFacet sont déployés pour chaque Jardin. Ensemble, ils permettent à un Jardin d’évoluer : les développeurs peuvent appeler diamondCut sur le proxy pour brancher de nouveaux modules (par exemple, un module de prêt ou une intégration de swap) sans avoir besoin de redéployer tout le contrat.
Registre de facettes géré par la DAO
Pour maintenir la sécurité et la décentralisation, le protocole utilise un registre de facettes gouverné par la DAO. Tous les modules candidats (facettes de mise à jour) doivent être enregistrés et vérifiés avant utilisation. En pratique, un nouveau contrat de facette doit être enregistré par le processus de gouvernance de la DAO. Seules les facettes de ce registre on-chain peuvent être ajoutées aux Jardins via diamondCut. La mise à jour d’une implémentation de facette nécessite également l’approbation de la DAO, donc aucun code arbitraire ne peut être injecté. Chaque facette subit une vérification rigoureuse par des auditeurs avant d’être incluse dans le registre. Ce modèle équilibre flexibilité et sécurité : la DAO s’assure que seuls des modules fiables et audités (par exemple, des facettes DEX ou de prêt) sont disponibles pour les Jardins.
Facettes par défaut (Cut, Loupe, Ownership)
Chaque Jardin inclut dès le départ les facettes Diamond de base. DiamondCutFacet fournit l’interface diamondCut utilisée pour ajouter, remplacer ou supprimer des sélecteurs de fonctions dans le proxy du Jardin. DiamondLoupeFacet offre l’introspection : il permet à quiconque de vérifier quelles facettes sont présentes et quelles fonctions elles implémentent. OwnershipFacet gère le propriétaire/admin du Jardin (initialement l’utilisateur qui l’a créé). Ces facettes par défaut garantissent l’évolutivité et le contrôle d’accès. Par conception, chaque nouveau Jardin déploie ses propres instances de ces facettes, de sorte que l’utilisateur a un contrôle total (via son compte propriétaire de NFT) sur les modules de son portefeuille.
Modules DeFi composables
Au-delà des modules par défaut, les Jardins peuvent « brancher » divers modules DeFi selon les besoins. Par exemple, une facette Lending pourrait intégrer un protocole de prêt/emprunt, et une facette DEX pourrait permettre des échanges de tokens via un AMM. Ces facettes sont simplement d’autres contrats implémentant une logique financière. Via diamondCut, un utilisateur (ou un contrat autorisé) peut ajouter ces facettes à son Jardin, composant ainsi des stratégies d’investissement personnalisées. Comme les facettes sont sans état et réutilisables, un seul déploiement de facette de prêt peut servir de nombreux Jardins, économisant du gaz. Cette modularité permet aux Jardins de s’adapter : de nouveaux protocoles peuvent être intégrés simplement en enregistrant leur facette et en l’ajoutant au Jardin au besoin.
Garden Factory & Propriété NFT
Les nouveaux Jardins sont créés par la Garden Factory (elle-même une facette Diamond). Lorsqu’un utilisateur appelle la factory, elle déploie un nouveau proxy Jardin avec l’utilisateur comme propriétaire. La factory prend deux paramètres clés : l’adresse de l’utilisateur (msg.sender) et un nouvel ID de jeton. Elle frappe ensuite un NFT ERC-721 correspondant à cet ID, le liant au Jardin. Ce NFT est le titre de propriété du Jardin : posséder le NFT signifie posséder le contrat de portefeuille. En pratique, si un utilisateur vend ou transfère son NFT, le Jardin l’accompagne : le nouveau propriétaire du jeton a un contrôle total. Nous nous appuyons sur les fonctions de transfert d’ERC-721 (transferFrom/safeTransferFrom) et les vérifications ownerOf pour gérer cette logique de propriété. Ainsi, les Jardins sont des portefeuilles entièrement transférables – une marketplace NFT pourrait permettre aux utilisateurs d’acheter et de vendre des stratégies DeFi complètes en une seule transaction.